/**
 * Created by Administrator on 2016/6/27.
 */
//注册的操作,都挂在到user这个对象上
//随后,如果有关与注册的操作,是不是我们直接调用这个对象
//连接数据库
var mongodb=require('./db');
//在写这个对象的时候,就要考虑哪些数据
function User(user){
    //对象,先写这个属性
    this.name=user.name;
    this.password=user.password;
    this.email=user.email;
}
//注册信息保存,
User.prototype.save=function(callback){
   //第一步,手收集数据
    //打开数据库
    //打开数据库中user的集合
    //将数据写入user集合当中去
    var user={
        name:this.name,
        password:this.password,
        email:this.email
    }
    //打开数据库
    mongodb.open(function(err,db){
        if(err){
            //res.flash('error','数据库连接失败');
            return callback(err);
        }
        //打开数据库中的users集合,他和上边的User是不一样的
        db.collection('users',function(err,collection){
            if(err){
                mongodb.close();
                return callback(err);
            }
            //将数据写入users集合当中去
            collection.insert(user,function(err,data){
               //无论正确与否数据库都要关闭
                mongodb.close();
                if(err){
                    return callback(err);
                }else{
                    callback(null,data[0]);
                }
            })
        })
    })

}
//注册信息的存储,获取到某一个用户注册信息
User.get=function(name,callback){
  //第一步,打开数据库
    //打开数据库中user的集合
    //判断是否有name相同的用户
    //返回这个用户信息
    //打开数据库
    mongodb.open(function(err,db){
        if(err){
            return callback(err);
        }
        //db.collection是用来读取users的集合的
        //collection是users集合当中的所有数据
        db.collection('users',function(err,collection){
            if(err){
                mongodb.close();
                return callback(err);
            }
            //findone获取到具体的某一个用户的注册信息,将这个注册信息返回给回调函数
            collection.findOne({name:name},function(err,user){
                if(err){
                    return callback(err);
                }
                callback(null,user);//成功返回查询的信息
            })
        })
    })
}
//封装模块,方便调用
module.exports=User;